import axios from "axios";
import {ElMessage} from "element-plus";

const instance = axios.create({
    baseURL: import.meta.env.VITE_APP_BASE_API,
})
// 请求拦截器
instance.interceptors.request.use(
    config => {
        return config;
    }
)

// 响应拦截器
instance.interceptors.response.use(
    async response => {
        const result = response.data;
        // 请求成功
        if (result.code === 200) {
            return result.data;
        }
        let msg = ''
        switch (result.code) {
            case 401:
                msg = result.message || '认证失败'
                ElMessage.error(msg)
                setTimeout(() => {
                    window.location.href = "/login"
                }, 2000)
                break
            case 402:
                msg = result.message || '认证过期'
                localStorage.clear()
                ElMessage.error(msg)
                setTimeout(() => {
                    window.location.href = "/login"
                }, 2000)
                break
            case 403:
                msg = result.message || '权限不足'
                localStorage.clear()
                ElMessage.error(msg)
                setTimeout(() => {
                    window.location.href = "/login"
                }, 2000)
                break
            case 404:
                msg = result.message || '请求地址错误'
                break
            case 500:
                msg = result.message || '服务器出现问题'
                break
            default:
                msg = result.message || '网络出现问题'
                break
        }
        ElMessage.error(msg)
        return Promise.reject(msg)
    },
    async error => {
        let msg = '';
        console.log(error)
        let status = error.response.status
        switch (status) {
            case 401:
                msg = '认证失败'
                ElMessage.error(msg)
                setTimeout(() => {
                    window.location.href = "/login"
                }, 2000)
                break
            case 403:
                msg = '权限不足'
                localStorage.clear()
                ElMessage.error(msg)
                setTimeout(() => {
                    window.location.href = "/login"
                }, 2000)
                break
            case 404:
                msg = '请求地址错误'
                break
            case 500:
                msg = '服务器出现问题'
                break
            default:
                msg = '网络出现问题'
                break
        }
        ElMessage.error(msg)
        return Promise.reject(msg)
    }
)

export default instance;
